package com.dao;

import java.util.List;

import com.tools.Page;
import com.tools.ParamType;

public interface IBaseDao<T> {

	/**
	 * 保存一个对象
	 * @param t 要保存的对象
	 */
	void save(T t);

	/**
	 * 删除一个对象
	 * @param t 要删除的对象
	 */
	void delete(T t);

	/**
	 * 更新一个对象
	 * @param t 要更新的对象
	 */
	void update(T t);

	/**
	 * 查询一个对象 
	 * @param entityClass 要查询的类的类型
	 * @param params	查询到参数
	 * @return 查到的结果
	 */
	T findByParams(Class<T> entityClass, ParamType... params);

	/**
	 * 查询一组对象
	 * @param entityClass 要查询的对象的类型
	 * @param page 分页
	 * @param params 参数
	 * @return 结果
	 */
	List<T> getByParams(Class<T> entityClass,Page page, ParamType... params);
	
	/**
	 * 查询一组对象
	 * @param entityClass 要查询的对象的类型
	 * @param params 参数
	 * @return 结果
	 */
	List<T> getByParams(Class<T> entityClass, ParamType... params);

	/**
	 * 获得记录数
	 * @param entityClass 要查询的类型
	 * @param params 参数
	 * @return 结果
	 */
	Long count(Class<T> entityClass, ParamType... params);

}